package com.example.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.common.Result;
import com.example.entity.CommentInfo;
import com.example.service.CommentService;
import org.apache.ibatis.annotations.Delete;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
/**
 * 评论控制器类
 * 处理评论相关的HTTP请求
 */
@RestController
// 设置请求路径前缀为/comment
@RequestMapping("/comment")
public class CommentController {

    // 注入评论服务类实例
    @Resource
    private CommentService commentService;

    /**
     * 获取评论列表接口
     * @return 返回所有评论信息的列表
     */
    @GetMapping("/list")
    public Result getListInfo(){
        // 调用服务层方法获取评论列表，并封装成统一返回结果
        return Result.success(commentService.selectCommentList());
    }

    /**
     * 添加或更新评论接口
     * @param commentInfo 评论信息对象，从请求体中获取
     * @return 返回操作结果
     */
    @PostMapping("/add")
    public Result saveOrUpdateInfo(@RequestBody CommentInfo commentInfo){
        // 调用服务层方法保存或更新评论信息，并封装成统一返回结果
        return Result.success(commentService.saveOrUpdate(commentInfo));
    }

    /**
     * 删除评论接口
     * @param id 要删除的评论ID
     * @return 返回删除操作结果
     */
    @DeleteMapping("/delete")
    public Result deleteInfo(@RequestParam Integer id){
        // 创建查询条件构造器
        QueryWrapper<CommentInfo> queryWrapper = new QueryWrapper<>();
        // 设置删除条件：删除ID等于指定值或pid等于指定值的记录（即删除评论及其回复）
        queryWrapper.eq("id",id).or().eq("pid",id);
        // 调用服务层方法执行删除操作，并封装成统一返回结果
        return Result.success(commentService.remove(queryWrapper));
    }
}
